package com.arpa.wms.service;

import com.arpa.wms.domain.dto.CountingDTO;
import com.arpa.wms.domain.entity.Counting;
import com.arpa.wms.domain.vo.CountingItemVO;
import com.arpa.wms.domain.vo.CountingVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 盘点单 服务类 接口
 * @author jinss
 * @date 2020-08-28 11:21:23
 **/
public interface ICountingService extends IService<Counting> {

    /**
     * 保存
     * @param entity
     * @return
     */
    @Override
    boolean save(Counting entity);

    boolean submit(Counting counting);



    /**
     * 根据code更新实体
     * @param entity
     * @return
     */
    boolean updateByCode(Counting entity);

    /**
     * 查询列表
     * @param countingDTO
     * @return
     */
    List<CountingVO> queryList(CountingDTO countingDTO);

    List<String> queryByGoodsCode(List<String> list);

    /**
     * 查询合计,包含总数
     * @param countingDTO
     * @return
     */
    CountingVO queryListSum(CountingDTO countingDTO);

    /**
     * 根据编码获取盘点单
     * @param code
     * @param pageNum
     * @param pageSize
     * @return
     */
    CountingVO getOneByCode(String code,int pageNum,int pageSize, String groupCode);

    /**
     * 删除盘点单
     * @param codes
     * @return
     */
    boolean remove(List<String> codes);

    /**
     * 根据编码更新状态
     * @param counting
     * @return
     */
    int updateStatusByCode(Counting counting);

    /**
     * 盘点登记确认
     * @param counting 盘点单
     * @return
     */
    int confirm(Counting counting);

    /**
     * 更新盘点单状态
     *
     * @param counting 盘点单
     * @return
     */
    int updateRegisterByCode(Counting counting);

    int invalid(String code);
     /**
      *  @author: Allen chen
      *  @Date: 2020/10/22 16:04
      *  @Description: 根据code查询任务对应的待盘点明细信息
      */
    List<CountingItemVO> queryTaskDetailByCode(CountingDTO countingDTO);



    /**
     * 更新下发状态
     * @param code 盘点单标识
     */
    void updateIssueStatus(String code, String groupCode);

    /**
     * 根据编码获取获取盘点单以及盘点登记明细
     * @param code
     * @return
     */
    CountingVO registerDetail(String code,int pageNum,int pageSize);

}
